package cn.kattomy.shop.order.dao;

import java.util.List;

import cn.kattomy.shop.order.vo.Order;
import cn.kattomy.shop.order.vo.OrderItem;
import cn.kattomy.shop.utils.PageBean;

public interface OrderDao {

	/**
	 * 将传入的订单对象 order 保存在数据库
	 * @param order
	 */
	void save(Order order);

	/**
	 * 根据传入的用户 uid 查询该用户名下的订单数量
	 * @param uid 用户 id
	 * @return uid 用户名下的订单数量
	 */
	Integer findByCountUid(Integer uid);
	
	/**
	 * 查询当前页码下的所有数据
	 * @param uid 用户 id
	 * @param begin 分页起始位置
	 * @param limit 分页数据条数
	 * @return 该页码显示数据的 List 集合
	 */
	List<Order> findByPageuid(Integer uid, Integer begin, Integer limit);

	/**
	 * 根据传入的订单 id 查询响应的订单
	 * @param oid 订单 id
	 * @return 订单 id 为传入 id 的订单
	 */
	Order findByOid(Integer oid);

	/**
	 * 更新传入的订单
	 * @param currOrder 传入的一个订单对象
	 */
	void update(Order currOrder);

	/**
	 * 查询所有的订单的数量
	 * @return 
	 */
	int findByCount();

	/**
	 *	分页查询所有的订单
	 * @param begin 分页起始位置
	 * @param pageSize 分页的数据条数
	 * @return 当前页面的订单对象组成的 List 集合
	 */
	List<Order> findByPage(int begin, Integer pageSize);

	/**
	 * 根据订单 id 查询 订单项 
	 * @param oid 订单的 id
	 * @return 订单旗下订单项组成的 List 集合
	 */
	List<OrderItem> findOrderItem(Integer oid);

	/**
	 * 删除订单
	 * @param order
	 */
	void delete(Order order);

}
